package org.baojie.visit;

import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import org.baojie.SQLErrorType;

import java.util.List;
import java.util.Map;

/**
 * @author baojie
 * @desc 功能描述
 * @date 2022/6/17 上午11:16
 */
public interface Visitor {

    /**
     * 检索全部的 create 语句, 校验其是否全部带有 comment 备注以及 primary 主键信息
     *
     * @return
     */
    Map<SQLErrorType, ColumnDefinition> visitCreate();

    /**
     * 检测所有的 update 语句是否全部带有 where 条件
     *
     * @return
     */
    Map<SQLErrorType, Table> visitUpdate();

    /**
     * 返回全部的 alter 语句, 在外部进行检测是否接入虎鲸
     *
     * @return
     */
    List<Statement> aboutHukingAlter();

    /**
     * 是否全部是 select 语句
     *
     * @return
     */
    boolean onlySelect();

}
